package com.trinity.orders.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.trinity.common.annotation.Excel;
import com.trinity.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.ToString;

import java.util.Date;

/**
 * 【请填写功能名称】对象 xc_pay_record
 *
 * @author trinity
 * @date 2023-11-19
 */
@Data
@ToString
@TableName("xc_pay_record")
public class XcPayRecord extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private String id;

    /**
     * 商品订单号
     */
    @Excel(name = "商品订单号")
    private String orderId;

    /**
     * 本系统支付交易号
     */
    @Excel(name = "本系统支付交易号")
    private String payNo;

    /**
     * 第三方用户id
     */
    @Excel(name = "第三方用户id")
    private String openid;

    /**
     * 学生id
     */
    @Excel(name = "学生id")
    private String studentId;

    /**
     * 学生姓名
     */
    @Excel(name = "学生姓名")
    private String studentName;

    /**
     * 第三方支付交易流水号
     */
    @Excel(name = "第三方支付交易流水号")
    private String outPayNo;

    /**
     * 第三方支付渠道编号
     */
    @Excel(name = "第三方支付渠道编号")
    private String outPayChannel;

    /**
     * 支付子渠道11 微信公众号支付 12 扫码支付
     */
    @Excel(name = "支付子渠道11 微信公众号支付 12 扫码支付")
    private String subPayChannel;

    /**
     * 支付方式
     */
    @Excel(name = "支付方式")
    private String payMethods;

    /**
     * 订单名称
     */
    @Excel(name = "订单名称")
    private String orderName;

    /**
     * 订单总价单位元
     */
    @Excel(name = "订单总价单位元")
    private String totalPrice;

    /**
     * 订单金额
     */
    @Excel(name = "订单金额")
    private String totalAmount;

    /**
     * 实际支付金额
     */
    @Excel(name = "实际支付金额")
    private String realAmount;

    /**
     * 交易状态，枚举值：
     * SUCCESS：支付成功
     * REFUND：转入退款
     * NOTPAY：未支付
     * CLOSED：已关闭
     * REVOKED：已撤销（仅付款码支付会返回）
     * USERPAYING：用户支付中（仅付款码支付会返回）
     * PAYERROR：支付失败（仅付款码支付会返回）
     * 示例值：SUCCESS
     */
    @Excel(name = "交易状态")
    private String status;

    /**
     * 支付完成时间，遵循rfc3339标准格式，
     * 格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE，yyyy-MM-DD表示年月日，
     * T出现在字符串中，表示time元素的开头，HH:mm:ss表示时分秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。
     * 例如：2015-05-20T13:29:35+08:00表示，北京时间2015年5月20日 13点29分35秒。
     * 示例值：2018-06-08T10:34:56+08:00
     */
    @Excel(name = "支付完成时间")
    private String paySuccessTime;

    /**
     * 订单失效时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单失效时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expireTime;

    /**
     * 关单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "关单时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date closeTime;

    /**
     * 微信支付订单号
     */
    @Excel(name = "微信支付订单号")
    private String transactionId;

    /**
     * 商户号
     */
    @Excel(name = "商户号")
    private String mchid;

    /**
     * appid
     */
    @Excel(name = "appid")
    private String appid;

    /**
     * 微信预支付ID
     */
    @Excel(name = "微信预支付ID")
    private String prepayId;

    /**
     * 付款银行
     */
    @Excel(name = "付款银行")
    private String bankType;

    /**
     * 附加数据
     */
    @Excel(name = "附加数据")
    private String attach;

    /**
     * 支付完成时间
     */
    @Excel(name = "支付完成时间")
    private String successTime;

    /**
     * outTradeNo 本系统的支付订单号
     */
    @Excel(name = "本系统的支付订单号")
    private String outTradeNo;

    /**
     * 交易类型，枚举值：
     * JSAPI：公众号支付
     * NATIVE：扫码支付
     * APP：APP支付
     * MICROPAY：付款码支付
     * MWEB：H5支付
     * FACEPAY：刷脸支付
     * 示例值：MICROPAY
     */
    @Excel(name = "交易类型")
    private String tradeType;

    /**
     * 交易状态，枚举值：
     * SUCCESS：支付成功
     * REFUND：转入退款
     * NOTPAY：未支付
     * CLOSED：已关闭
     * REVOKED：已撤销（付款码支付）
     * USERPAYING：用户支付中（付款码支付）
     * PAYERROR：支付失败(其他原因，如银行返回失败)
     */
    @Excel(name = "交易状态")
    private String tradeState;

    /**
     * 交易状态描述
     * 示例值：支付成功
     */
    @Excel(name = "交易状态描述")
    private String tradeStateDesc;

    /*---------------------------------------Amount-----------------------------------------*/
    /**
     * 订单总金额，单位为分。
     */
    @Excel(name = "订单总金额，单位为分。")
    private String total;

    /**
     * 用户支付金额，单位为分。
     */
    @Excel(name = "用户支付金额，单位为分。")
    private String payerTotal;

    /**
     * 币种CNY
     */
    @Excel(name = "币种CNY")
    private String currency;

    /**
     * 用户支付币种
     */
    @Excel(name = "用户支付币种")
    private String payerCurrency;
    /**
     * 支付通知报文
     */
    private String content;
}
